A content addressable memory (CAM) device is a storage device that can be instructed to compare a specific pattern of comparand data with data stored in its associative CAM array. The entire CAM array, or segments thereof, are searched in parallel for a match with the comparand data. If a match exists, the CAM device indicates the match by asserting a match flag. If no matching entries are found, the CAM device can be subsequently instructed to write the comparand data into the next available empty memory location in the CAM array. The next free empty location is commonly referred to as the next free address or "NFA".
A typical process of comparing comparand data with a CAM array and updating the CAM array with non-repetitive data (i.e., data not already stored in the CAM array) generally requires multiple instructions and multiple clock cycles. A typical process includes the following steps: (1) a first instruction and clock cycle to write comparand data into the CAM device and instruct the CAM device to perform a comparison operation; (2) a second clock cycle for external logic to determine if the match flag has been asserted and decide how to proceed; (3) a second instruction and third clock cycle to instruct the CAM device to load the comparand data into the next free address from the comparand register; and, (4) a third instruction and fourth clock cycle to instruct the CAM device to output the next free address that received the comparand data, and which may be required by other external memories that may store associated data or other information for this memory location.
Because of the multiple number of instructions and clock cycles required to update a CAM device with non-repetitive data, the overall operating speed of the CAM device is reduced. Additionally, the maximum search rate of the CAM device cannot be maintained as it generally requires at least one clock cycle for external logic to determine whether a match occurred in the search.
Thus, it would be desirable to have a CAM device that can update the CAM array with non-repetitive data in fewer instructions and fewer clock cycles. It would also be desirable to have a CAM device that may sustain its maximum search rate during the operation. Such a CAM device may be loaded with non-repetitive data at faster rates than is conventionally possible.